A number of coding schemes have been developed to encode binary data. For example, JPEG images may be encoded using Huffman codes. The H.264 standard allows for two possible entropy coding processes: Context Adaptive Variable Length Coding (CAVLC) or Context Adaptive Binary Arithmetic Coding (CABAC). CABAC results in greater compression than CAVLC, but CABAC is more computationally demanding.
Recent advances in binary entropy coding have made it increasingly attractive as an encoding scheme. For example, it is possible to engage in parallel encoding, where a source input sequence is separated into parallel subsequences based on context modeling, where each subsequence contains the symbols associated with a particular probability from the context model. In another example, variable-to-variable coding with a primary codeset and a secondary codeset can improve coding efficiency. The secondary codeset is used only during “end” or “flush” events, where a sequence or subsequence of symbols does not complete a primary codeword. The subsequences of symbols associated with particular probabilities defined in the context model may be considered as being produced by different “sources”.
Nevertheless, there are still certain drawbacks to binary entropy encoding that can arise in certain circumstances. For example, in the context of parallel encoding the output bitstream may include overhead information about the length of each of the encoded subsequences. For a context model having a large number of “sources”, i.e. probabilities, this can mean a sizable overhead. In the context of two-codeset variable-to-variable encoding, the use of the less-efficient secondary codeset can be costly, particular where there are a large number of “sources” and, thus, a large number of partial subsequences that need to be encoded using secondary codewords after a flush event.
Similar reference numerals may have been used in different figures to denote similar components.